package com.biz.primus.ms.order.service;

import com.biz.primus.model.order.vo.aftersale.QueryOrderResponseVO;
import com.biz.primus.model.order.vo.aftersale.ReturnOrderAddLogisticsRequestVO;
import com.biz.primus.model.order.vo.aftersale.ReturnOrderRequestVO;
import com.biz.primus.model.order.vo.aftersale.ReturnOrderResponseVO;

/**
 * 退货订单服务
 *
 * @author Tiger Feng
 * @date 2017年11月20日
 */
public interface ReturnOrderService {
    /**
     * 查询订单信息（申请售后）
     * @param orderCode 订单编号
     * @return
     */
    QueryOrderResponseVO getByOrderCode4AfterSale(String orderCode);

    /**
     * 申请退货单
     * @param returnOrderRequestVO 退货单请求模型
     * @return  退货单响应模型
     */
    ReturnOrderResponseVO applyReturnOrder(ReturnOrderRequestVO returnOrderRequestVO);

    /**
     * 查询退货单
     * @param orderCode
     * @return
     */
    ReturnOrderResponseVO getByOrderCode(String orderCode);

    /**
     * 补充退货单物流信息,用户将退货商品回寄的物流单号、物流名称等信息补充到退货单中
     * @param returnOrderAddLogisticsRequestVO 物流信息
     * @return 更新后的退货单响应模型
     */
    ReturnOrderResponseVO addLogisticsInfo(ReturnOrderAddLogisticsRequestVO returnOrderAddLogisticsRequestVO);

    /**
     * 门店收货
     * @param orderCode
     * @return
     */
    ReturnOrderResponseVO storeReceived(String orderCode);

    /**
     * 门店退款
     * @param orderCode
     * @return
     */
    ReturnOrderResponseVO storeRefund(String orderCode);

    /**
     * 取消退货单
     * @param returnCode
     * @return
     */
    Boolean cancelReturnOrder(String returnCode);
}
